<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected $repositories = [];

    protected function repository($name, $repository = null)
    {
        if (is_null($repository)) {
            if (!key_exists($name, $this->repositories)) {
                return null;
            }

            return $this->repositories[$name];
        }

        if (key_exists($name, $this->repositories)) {
            throw new \Exception('repeat repository name');
        }

        $this->repositories[$name] = $repository;
    }
}
